/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */
package DAO;

import DTO.DoanhThuTheoLoaiPhong_DTO;
import java.sql.ResultSet;
import java.sql.ResultSetMetaData;
import javax.swing.table.DefaultTableModel;

/**
 *
 * @author PEKEM
 */
public class DoanhThuTheoLoaiPhong_DAO {

    private static String sqlString;
    private static MSSQLConnect cn;
    private static ResultSet rs;

    public static DefaultTableModel addTable(ResultSet rs) throws Exception {
        DefaultTableModel table = new DefaultTableModel();
        ResultSetMetaData metaData = rs.getMetaData();
        int totalColumn = metaData.getColumnCount();
        Object[] dataRow = new Object[totalColumn];

        if (rs != null) {
            for (int i = 1; i <= totalColumn; i++) {
                table.addColumn(metaData.getColumnName(i));
            }
            while (rs.next()) {
                for (int i = 1; i <= totalColumn; i++) {
                    dataRow[i - 1] = rs.getObject(i);
                }
                table.addRow(dataRow);
            }

        }
        return table;

    }

    public static DefaultTableModel layDSTheoThang(String thang) throws Exception {
        DefaultTableModel table = new DefaultTableModel();
        sqlString = "SELECT lp.TenLoaiPhong as [Loại Phòng],dt.DoanhThu as [Doanh Thu] "
                + "FROM LOAIPHONG lp INNER JOIN DOANHTHUTHEOLOAIPHONG dt ON lp.MaLoaiPhong = dt.MaLoaiPhong "
                + "WHERE dt.ThangNam = '" + thang + "'";
        try {
            //thực hiện câu truy vấn
            cn = new MSSQLConnect();
            //thực hiện câu truy vấn
            rs = cn.excuteQuery(sqlString);
            table = addTable(rs);
        } catch (Exception e) {
            throw new Exception("Không thể lấy danh sách doanh thu theo loại phòng");
        } finally {
            cn.Close();
        }
        return table;
    }

//    public static Float layDoanhThuTheoThang(String thang) throws Exception {
//        Float kq;
//        kq = null;
//        sqlString = "SELECT DoanhThu as [DT] FROM DOANHTHUTHEOLOAIPHONG WHERE ThangNam = '" + thang + "'";
//        try {
//            //thực hiện câu truy vấn
//            cn = new MSSQLConnect();
//            //thực hiện câu truy vấn
//            rs = cn.excuteQuery(sqlString);
//            while (rs.next()) {
//                kq += Float.parseFloat(rs.getString("DT"));
//            }
//
//        } catch (Exception e) {
//            throw new Exception("Không thể lấy mã max");
//        } finally {
//            cn.Close();
//        }
//        return kq;
//    }
    public static Float layDoanhThuTheoThang(String thang) throws Exception {
        Float kq;
        kq = null;
        sqlString = "SELECT SUM (DoanhThu) as [DT] FROM DOANHTHUTHEOLOAIPHONG WHERE ThangNam = '" + thang + "'";
        try {
            //thực hiện câu truy vấn
            cn = new MSSQLConnect();
            //thực hiện câu truy vấn
            rs = cn.excuteQuery(sqlString);
            while (rs.next()) {
                kq = rs.getFloat("DT");
            }

        } catch (Exception e) {
            throw new Exception("Không thể lấy mã max");
        } finally {
            cn.Close();
        }
        return kq;
    }

    public static Float layDoanhThuTheoThangVaLoaiPhong(String thang, String maLP) throws Exception {
        Float kq;
        kq = null;
        sqlString = "SELECT DoanhThu as [DT] FROM DOANHTHUTHEOLOAIPHONG WHERE ThangNam = '" + thang + "' AND MaLoaiPhong = '" + maLP + "'";
        try {
            //thực hiện câu truy vấn
            cn = new MSSQLConnect();
            //thực hiện câu truy vấn
            rs = cn.excuteQuery(sqlString);
            while (rs.next()) {
                kq = rs.getFloat("DT");
            }

        } catch (Exception e) {
            throw new Exception("Không thể lấy mã max");
        } finally {
            cn.Close();
        }
        return kq;
    }
//    public static float layTyLeTheoMLP(String maLP, String thang) throws Exception {
//        float kq = 0;
//        sqlString = "SELECT TyLe as [TL] FROM DOANHTHUTHEOLOAIPHONG WHERE MaLoaiPhong = '" + maLP + "' AND ThangNam = '" + thang + "'";
//        try {
//            //thực hiện câu truy vấn
//            cn = new MSSQLConnect();
//            //thực hiện câu truy vấn
//            rs = cn.excuteQuery(sqlString);
//            while (rs.next()) {
//                kq = rs.getFloat("TL");
//            }
//
//        } catch (Exception e) {
//            throw new Exception("Không thể lấy mã max");
//        } finally {
//            cn.Close();
//        }
//        return kq;
//    }

    public static String layMaDT(String maP, String thang) throws Exception {
        sqlString = "SELECT dt.MaDT as [Ma] FROM DOANHTHUTHEOLOAIPHONG dt INNER JOIN PHONG p ON dt.MaLoaiPhong = p.MaLoaiPhong "
                + " WHERE p.MaPhong = '" + maP + "' AND ThangNam = '" + thang + "'";
        String kq = "";
        try {
            //thực hiện câu truy vấn
            cn = new MSSQLConnect();
            //thực hiện câu truy vấn
            rs = cn.excuteQuery(sqlString);
            while (rs.next()) {
                kq = rs.getString("Ma");
            }
        } catch (Exception e) {
            throw new Exception("Không thể lấy mã max");
        } finally {
            cn.Close();
        }
        return kq;
    }

    public static int Insert(DoanhThuTheoLoaiPhong_DTO dt) throws Exception {
        int n = 0;
        sqlString = "INSERT INTO DOANHTHUTHEOLOAIPHONG(MaDT, MaLoaiPhong, ThangNam, DoanhThu) VALUES('"
                + dt.getMaDT() + "','"
                + dt.getMaLoaiPhong() + "','"
                + dt.getThangNam() + "','"
                + dt.getDoanhThu() + "')";
        //Kết nối CSDL
        try {
            cn = new MSSQLConnect();
            n = cn.executeUpdate(sqlString);
        } catch (Exception e) {
            System.out.print(e.toString());
            //throw new Exception("Không thể lấy danh sách phòng");
        } finally {
            cn.Close();
        }
        return n;
    }
    //xóa

    public static int Delete(String maDT) throws Exception {
        int n;
        sqlString = "DELETE FROM DOANHTHUTHEOLOAIPHONG WHERE MaDT = '" + maDT + "'";
        try {
            cn = new MSSQLConnect();
            //Thực thi câu lệnh SQL
            n = cn.executeUpdate(sqlString);

        } catch (Exception e) {
            throw new Exception("Lỗi Kết Nối Cơ sở dữ liệu.");
        } finally {
            cn.Close();
        }
        System.out.println("Thực hiện câu lệnh xóa thành công");
        return n;
    }

    public static int Update(DoanhThuTheoLoaiPhong_DTO lp) throws Exception {
        int n;
        sqlString = "UPDATE DOANHTHUTHEOLOAIPHONG SET MaLoaiPhong='" + lp.getMaLoaiPhong()
                + "',ThangNam'" + lp.getThangNam()
                + "',DoanhThu = '" + lp.getDoanhThu()
                + "' WHERE MaPhong='" + lp.getMaDT() + "'";
        try {
            cn = new MSSQLConnect();
            //Thực thi câu lệnh SQL
            n = cn.executeUpdate(sqlString);

        } catch (Exception e) {
            throw new Exception("Lỗi Kết Nối Cơ sở dữ liệu.");
        } finally {
            cn.Close();
        }
        System.out.println("Thực hiện câu lệnh xóa thành công");
        return n;
    }
    //tạo mã tự động   

    public static String taoMaTuDong(String maGoc, int batDau) throws Exception {
        String str, kq;
        int so;
        try {
            str = maGoc.substring(batDau);
            kq = maGoc.substring(0, batDau);
            so = Integer.parseInt(str) + 1;
            for (int i = 0; i < str.length() - Integer.valueOf(so).toString().length(); i++) {
                kq += "0";
                //return kq;
            }
            kq = kq + so;
        } catch (Exception x) {
            return null;
        }
        return kq;
    }

    public static String layMaCuoiCung() throws Exception {
        String kq;
        kq = null;
        sqlString = "SELECT TOP 1 MaDT as [Mã DT] FROM DOANHTHUTHEOLOAIPHONG ORDER BY MaDT DESC";
        try {
            //thực hiện câu truy vấn
            cn = new MSSQLConnect();
            //thực hiện câu truy vấn
            rs = cn.excuteQuery(sqlString);
            while (rs.next()) {
                kq = rs.getString("Mã DT");
            }

        } catch (Exception e) {
            throw new Exception("Không thể lấy mã max");
        } finally {
            cn.Close();
        }
        return kq;
    }

    public static int UpdateDoanhThu(String doanhThu, String maDT) throws Exception {
        int n;
        sqlString = "UPDATE DOANHTHUTHEOLOAIPHONG SET DoanhThu = '" + doanhThu + "'"
                + "WHERE MaDT = '" + maDT + "'";
        try {
            cn = new MSSQLConnect();
            //Thực thi câu lệnh SQL
            n = cn.executeUpdate(sqlString);

        } catch (Exception e) {
            throw new Exception("Lỗi Kết Nối Cơ sở dữ liệu.");
        } finally {
            cn.Close();
        }
        return n;
    }
}
